package com.dvdfe8.crochet.modelo.entity;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.Table;
import javax.persistence.Transient;

@Entity
@Table(name="AMIGURUMI")
public class Amigurumi implements Serializable{

    @Transient
    private String[] tiemposElaboracion = { "Poco", "Normal", "Mucho" };
    
    @Id
    @GeneratedValue
    @Column(name="AMIGURUMI_ID")
    private int id;
    
    @Column(name="NOMBRE")
    private String nombre;
    
    @Column(name="PRECIO")
    private float precio;
    
    @Column(name="TIEMPO_ELABORACION")
    private int tiempoElaboracion;
    
    @Column(name="IMAGEN")
    private String imagen;
    
    @ManyToMany(fetch = FetchType.EAGER)
    @JoinTable(
            name="LANA_AMIGURUMI",
            joinColumns={@JoinColumn(name="LANA_ID")},
            inverseJoinColumns={@JoinColumn(name="AMIGURUMI_ID")}
    )
    private Collection<Lana> lanas = new ArrayList<Lana>();

    public Amigurumi(){
        
    }
    
    public int getId() {
            return id;
    }

    public void setId(int id) {
            this.id = id;
    }

    public String getNombre() {
            return nombre;
    }

    public void setNombre(String nombre) {
            this.nombre = nombre;
    }

    public float getPrecio() {
            return precio;
    }

    public void setPrecio(float precio) {
            this.precio = precio;
    }

    public void calcularPrecio() {

    }

    public String getTextoTiempoElaboracion() {
            return tiemposElaboracion[tiempoElaboracion];
    }

    public int getTiempoElaboracion() {
            return tiempoElaboracion;
    }

    public void setTiempoElaboracion(int tiempoElaboracion) {
            this.tiempoElaboracion = tiempoElaboracion;
    }

    public String getImagen() {
            return imagen;
    }

    public void setImagen(String imagen) {
            this.imagen = imagen;
    }

    public Collection<Lana> getLanas() {
            return lanas;
    }

    public void setLanas(ArrayList<Lana> lanas) {
            this.lanas = lanas;
    }

    public void agregarLana(Lana lana){
        this.lanas.add(lana);
    }
    
    public void quitarLana(Lana lana){
        this.lanas.remove(lana);
    }
}
